//
//  CWMainTabBar.swift
//  新浪微博练习02
//
//  Created by 曹魏 on 16/9/22.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

class CWMainTabBar: UITabBar {
    //定义一个闭包
    var composeClosure : (() -> ())?
    
    //在init方法中进行撰写按钮的添加,外界可以通过手写代码的方式创建tabbar按钮
    override init(frame: CGRect) {
        super.init(frame: frame)
        //添加撰写按钮
        addSubview(composeBtn)
        //撰写按钮添加完毕后,当我点击撰写按钮会跳到另一个控制器,所以此时应该添加按钮监听点击事件
        composeBtn.addTarget(self, action: #selector(composeBtnDidClick), for: .touchUpInside)
        
        
        
    }
    //监听方法
    //按钮的监听方法不希望被外界访问,需要私有
    @objc private func composeBtnDidClick() {
        //监听事件的实现应该放在控制器中执行,因为有可能事件不是我写,闭包
        composeClosure?()
        
    }
    
    
    //解档,从xib和sb中加载视图的时候会调用这个方法
    //
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    //布局子控件
    override func layoutSubviews() {
        //问题:需不需要进行super?
        //没有super一下会出现都堆在一起的现象
         super.layoutSubviews()
        let btnW = self.bounds.width/5
        let btnH = self.bounds.height
        var index = 0
        
        //遍历子控件
        for subview in subviews {
            
            
            //这一步一定要打印一下subview,因为subviews中的子控件有可能有其他类型
//            print(subview)
            //由于存在其他类型的控件,故需要判断一下
            if subview .isKind(of: NSClassFromString("UITabBarButton")!) {
                
                subview.frame = CGRect(x: CGFloat(index) * btnW, y: 0, width: btnW, height: btnH)
                index += (index == 1) ? 2 : 1
            }
        }
        //设置撰写按钮的位置
        composeBtn.bounds.size = CGSize(width: btnW, height: btnH)
        composeBtn.center = CGPoint(x: self.center.x, y: self.bounds.height * 0.5)
//        composeBtn.bounds.size = CGSize(width: btnW, height: btnH)
//        composeBtn.center = CGPoint(x: self.center.x, y: self.bounds.height * 0.5)
        
        
    }
    //通过懒加载实例化撰写微博的按钮
    private lazy var composeBtn: UIButton = {
        let btn = UIButton()
        btn.setImage(#imageLiteral(resourceName: "tabbar_compose_icon_add"), for: .normal)
        btn.setImage(#imageLiteral(resourceName: "tabbar_compose_icon_add_highlighted"), for: .highlighted)
        btn.setBackgroundImage(#imageLiteral(resourceName: "tabbar_compose_button"), for: .normal)
        btn.setBackgroundImage(#imageLiteral(resourceName: "tabbar_compose_button_highlighted"), for: .highlighted)
//        btn.sizeToFit()
        return btn
        
        
    }()
    
    

}

















